package model.tipolixo;

import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.Table;
import model.empresa.Empresa;
import com.sun.xml.bind.CycleRecoverable;


@Entity
@Table(name="tipo_lixo")
public class TipoLixo implements Serializable, CycleRecoverable{

     private Integer id;
     private String descricaoLixo;
     private List<Empresa> empresas;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID_TIPO_LIXO")
    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Column(name="DESCRICAO_LIXO", nullable=false, length=100)
    public String getDescricaoLixo() {
        return this.descricaoLixo;
    }

    public void setDescricaoLixo(String descricaoLixo) {
        this.descricaoLixo = descricaoLixo;
    }
    
    @ManyToMany(fetch=FetchType.LAZY, cascade=CascadeType.ALL, mappedBy="tipoLixo")
    public List<Empresa> getEmpresas() {
        return empresas;
    }

    public void setEmpresas(List<Empresa> empresas) {
        this.empresas = empresas;
    }

    @Override
    public Object onCycleDetected(Context cntxt) {
        System.out.println("CycleRecoverable.onCycleDetected # ".concat(this.toString()));
        TipoLixo n = new TipoLixo();
        n.setId(this.getId());
        return n;
    }
}